CMake现代构建系统:目标属性、生成器表达式与模块
📚 共计 30 章节
第01章
CMake概述
CMake是什么、为什么选择CMake、与传统Makefile对比、安装与版本选择
入门
基础
第02章
第一个CMake项目
CMakeLists.txt结构、cmake_minimum_required、project()、add_executable()、构建运行
实战
入门
第03章
变量与缓存
set()/unset()、普通变量与缓存变量、CMake缓存机制、GUI与ccmake
核心
配置
第04章
列表与字符串操作
list()命令、string()处理、正则表达式在CMake中的应用
编程
实用
第05章
控制流
if()/elseif()/else()、while()、foreach()、break()/continue()
逻辑
循环
第06章
函数与宏
function()/macro()定义与区别、参数传递、return()、作用域规则
封装
复用
第07章
目标属性基础
目标概念、set_target_properties()/get_target_property()、常用属性一览
目标
属性
第08章
目标属性进阶
CXX_STANDARD、POSITION_INDEPENDENT_CODE、VISIBILITY_INLINES_HIDDEN、MSVC_RUNTIME_LIBRARY
编译
标准
第09章
目标属性高级
LINK_INTERFACE_MULTIPLICITY、INTERFACE_LINK_LIBRARIES_DIRECT、BUILD_RPATH/INSTALL_RPATH、DLL控制
链接
运行时
第10章
生成器表达式基础
语法$<...>、布尔表达式、字符串表达式、配置相关表达式
表达式
生成器
第11章
生成器表达式进阶
平台/编译器检测、目标属性查询、链接相关、路径转换表达式
检测
动态
第12章
生成器表达式实战
条件编译、平台特定源文件、调试/发布不同链接库、安装路径动态计算
实战
技巧
第13章
库的构建
add_library()详解、STATIC/SHARED/MODULE/OBJECT、INTERFACE库、别名
库
模块
第14章
链接与依赖
target_link_libraries()、PRIVATE/PUBLIC/INTERFACE、传递依赖、循环依赖避免
依赖
链接
第15章
包含目录与编译定义
target_include_directories()、target_compile_definitions()、target_compile_options()、SYSTEM关键字
编译
接口
第16章
查找包
find_package()机制、Config/Module模式、FindXXX.cmake编写、Config文件生成
包管理
查找
第17章
内置模块
CMake内置模块概览、FetchContent、CTest、CPack
模块
工具
第18章
FetchContent详解
FetchContent_Declare()/MakeAvailable()、版本管理、覆盖补丁、与ExternalProject对比
依赖
外部
第19章
CTest与测试
enable_testing()/add_test()、ctest命令、GoogleTest集成、标签与超时
测试
质量
第20章
CPack与打包
CPack配置、生成器(NSIS/DEB/RPM/DMG)、组件安装、安装脚本
打包
发布
第21章
安装规则
install()命令详解、TARGETS/FILES/DIRECTORY/SCRIPT、权限配置、导出目标
安装
部署
第22章
导出与包注册
export()/install(EXPORT)、生成Config.cmake、包版本文件、find_package消费
导出
包
第23章
自定义命令与目标
add_custom_command()/add_custom_target()、生成源文件、构建后操作、依赖图定制
自定义
构建
第24章
工具链与交叉编译
CMAKE_TOOLCHAIN_FILE、系统/处理器检测、编译器检测、Sysroot与查找路径
交叉编译
工具链
第25章
预设(Presets)
CMakePresets.json/CMakeUserPresets.json、配置/构建/测试预设、继承与覆盖
预设
配置
第26章
工作流(Workflow)
CMake工作流预设、多配置管理、CI/CD集成、IDE集成(VS/CLion/QtCreator)
工作流
CI/CD
第27章
依赖管理策略
子目录/FetchContent选择、Conan/vcpkg集成、Superbuild模式、版本锁定与冲突解决
依赖
策略
第28章
性能优化
并行构建、Unity构建(Jumbo)、预编译头文件、ccache/sccache、LTO
优化
速度
第29章
调试CMake
message()调试、--trace/--trace-source、输出变量查看、常见错误与解决方案
调试
排错
第30章
大型项目实战
多模块项目结构、库分层与接口隔离、版本控制与发布流程、从零搭建现代CMake项目
实战
架构